﻿using System.Configuration;
using System.Data;
using System.Diagnostics;
using System.Reflection;
using System.Windows;

namespace WPFYuanShenDrawingVisual
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : Application
    {
        public App()
        {
            #region 单实例运行

            //判断程序是否已经启动
            var ProcessName = Assembly.GetExecutingAssembly().GetName().Name;//程序集名称
            Process currentProcess = Process.GetCurrentProcess();//当运行的新进程

            // 通过程序集名称判断是否有进程已运行
            Process[] ps = Process.GetProcessesByName(ProcessName);

            // 因为新进程名也是ProcessName，所以ps的Length大于1时才是有多个进程
            if (ps.Length > 1)
            {
                foreach (var item in ps)
                {
                    // 找到非当前新进程的 MessageConstruction 进程对象
                    if (item.Id != currentProcess.Id)
                    {
                        //关闭之前的进程
                        item.Kill();
                    }
                }
            }

            #endregion 单实例运行
        }
    }

}
